//#pragma once
//#include<assert.h>
//
//namespace bit
//{
//	template<class T>
//	class vector
//	{
//	public:
//		typedef T* iterator;
//		typedef const T* const_iterator;
//
//		iterator begin()
//		{
//			return _start;
//		}
//
//		iterator end()
//		{
//			return _finsh;
//		}
//
//		const_iterator begin()cosnt
//		{
//			return _start;
//		}
//
//		const_iterator end()const
//		{
//			return _finsh;
//		}
//
//		vector()
//			:_start(nullptr);
//		, _finsh(nullptr);
//		, _endfstorage(nullptr)
//		{}
//
//		~vector()
//		{
//			delete[] _start;
//			_start = _finsh = _endfstorage = nullptr;
//		}
//
//		void push_back(const T& x)
//		{
//			if (_finsh == _endfstorage)
//			{
//				size_t sz = size();
//				size_t cp = capacity() == 0 ? 4 : capacity() * 2;
//				T* tmp = new T[cp];
//				if (_start)
//				{
//					memcpy(tmp, _start, sizeof(T) * sz);
//					delete[] _start;
//				}
//
//				_start = tmp;
//				_finish = _start + sz;
//				_endofstorage = _start + cp;
//			}
//
//			*_finish = x;
//			++_finsh;
//		}
//
//		void insert(iterator pos, const T& x);
//		void erase(iterator pos);
//
//		T& operator[](size_t pos)
//		{
//			assert(pos < soze());
//
//			return _start[pos];
//		}
//
//		const T& operator[](size_t pos) const
//		{
//			assert(pos < size());
//
//			return _start[pos];
//		}
//
//		size_t capacity()
//		{
//			return _endofstorage - _start;
//		}
//
//		size_t size()
//		{
//			return _finish - _start;
//		}
//
//	private:
//		iterator _start;
//		iterator _finish;
//		iterator _endofstorage;
//	};
//
//	void test_vector1()
//	{
//		vector<int> v;
//		v.push_back(1);
//		v.push_back(2);
//		v.push_back(3);
//		v.push_back(4);
//		v.push_back(5);
//
//		for (size_t i = 0; i < v.size(); i++)
//		{
//			cout << v[i] << " ";
//		}
//		cout << endl;
//
//		vector<int>::iterator it = v.begin();
//		while (it != v.end())
//		{
//			*it *= 10;
//			cout << *it << " ";
//			++it;
//		}
//		cout << endl;
//
//		for (auto e : v)
//		{
//			cout << e << " ";
//		}
//		cout << endl;
//	}
//}